Friday, July 23, 2004

WS-BPEL vs WS-CDL

Words in Black are Quoted from
http://www.ebpml.org/ws_-_cdl.htm

1. CDL provides a definition of the information formats being exchanged by ALL participants, BPEL provides the information formats exchanged by one participant. A BPEL process interacts with multiple partner services; BPEL defines the information formats exchanged with partner services.
 
2. CDL provides the global message exchange between participants without a specific point of view, BPEL provides the message exchange from the point of view of one participant. A BPEL process stands on the point of view of the clients who are going to use this BPEL process.
 
3. CDL provides "reactive" rules that are used by each participant to compute the state of the choreography and infer which message exchange will/can happen next. BPEL specifies "active" rules that are executed to infer what to do next, once the rule is computed, the orchestration run-time executes the corresponding activity(ies). A BPEL process adopts imperative programming paradigm. It actively indicates the sequence of operations.

4. BPEL can describe two types of choreographies: master/slave and unilateral. Master/Slave is the case where the orchestrator controls everything and all other participants interact only with him and not between themselves (true peer-to-peer fashion). The unilateral case, is when every participant decides to describe its own view of the choreography. The true peer-to-peer fashion means all participents including the process itself are interacting with each other. In BPEL, partner services are peers to the process in the sense that they can communicate with each other synchronously or asynchronously. The enabling mechanism is WS-addressing. Each peer has an endpoint reference. In the real world, these two types of choreographies are rare. In addition, if you are a "master" you may not want to publicly disclose all your internal behavior just because you need a choreography definition. Bottom line, using BPEL to express choreographies is a very bad idea, it does not work often and when it works it is awkward. A very impressive argument! So what is the right direction of BPEL? Extending the functionality of existing WSDL services?
 
 

Programming language(1)

Procedural Programming
Quoted from
http://en.wikipedia.org/wiki/Procedural_programming

1. Procedural programming is a method (a programming paradigm) of computer programming based upon the concept of the unit and scope (the data viewing range of an executable code statement).

2. A procedural program is composed of one or more units or modules--either user coded or provided in a code library; each module is composed of one or more procedures, also called a function, routine, subroutine, or method, depending on programming language. It is possible for a procedural program to have multiple levels or scopes, with procedures defined inside other procedures. Each scope can contain variables which cannot be seen in outer scopes.

3. The term should not be confused with imperative programming. An example (non-imperative) procedural language is LOGO, which specifies sequences of steps to perform but does not have an internal state.
 
Imperative Programming Language
Quoted from
http://en.wikipedia.org/wiki/Imperative_programming
1. In computer science, imperative programming, as opposed to declarative programming, is a programming paradigm that describes computation in terms of a program state and statements that change the program state.

2. From low-level perspective, the program state is defined by the contents of memory, and the statements are instructions in the native machine language of the computer.

3. Most high-level languages support four basic types of statements: assignment, looping, conditional branching, and unconditional branching. Assignment statements, in general, perform an operation on information located in memory and store the results in memory for later use. High-level imperative languages, in addition, permit the evaluation of complex expressions, which may consist of a combination of arithmetic operations and function evaluations, and the assignment of the resulting value to memory. Looping statements allow a sequence of statements to be executed multiple times. Loops can either execute the statements they contain a predefined number of times, or they can execute them repeatedly until some condition changes. Conditional branching statements allow a block of statements to be executed only if some condition is met. Otherwise, the statements are skipped and the execution sequence continues from the statement following the block. Unconditional branching statements allow the execution sequence to be transferred to some other part of the program. These include the jump, called "goto" in many languages, and the subprogram, or procedure call.

4. The 1980s saw a rapid growth in interest in object-oriented programming. These languages were imperative in style, but added features to support objects.

5.Whereas imperative programming gives the computer a list of instructions to execute in a particular order, declarative programming describes to the computer a set of conditions and lets the computer figure out how to satisfy them. Declarative programming includes both functional programming and logic programming.
 
Functional Programming Language
Quoted from
http://en.wikipedia.org/wiki/Functional_programming

1. Functions are treated as first-class values, which is to say that functions can be parameters or inputs to other functions and can be the return values or outputs of a function.

2.Currying is a technique for rewriting a function with multiple parameters. A function with multiple parameters is treated as the composition of functions with a subset of parameters. The result is a function where the parameters in this subset are now fixed as constants, and the values of the rest of the parameters are still unspecified.

3. "Pure" functional programs need no variables. There is no explicit memory allocation and no explicit variable assignment. These operations occur automatically when a function is invoked.

4. By disallowing side effects in functions, the language provides referential transparency. This ensures that the result of a function will be the same for a given set of parameters no matter where, or when, it is evaluated. Referential transparency greatly eases both the task of proving program correctness and the task of automatically identifying independent computations for parallel execution.

5. Functional programming often depends heavily on recursion.

 

 

 

 

 

confusion of WS-BPEL

The following presentation
 http://www.ebpml.org/Meta,%20Meta,%20Meta.ppt
describes the confusion of WS-BPEL

Quoted from slide 17
•Business component can exhibit a long running behavior and looking from the perspective of such component, the flow of messages between itself and other components can also be expressed using a meta language.
–This is orchestration
•The confusion is that Components are typically very coarse and can directly be exposed to partners. The long-running behavior might also be complete.

As I know, WS-BPEL process itself can be described by WSDL.
Clients can access this WS-BPEL process as WSDL service. Then this
WS-BPEL process should be treated as a complete component and
be directly exposed to clients.
This leads to WS-CDL which namely is Choreography Description
Language.

Thursday, July 22, 2004

Where is BPEL 2.0 going?

A good web post about BPEL 2.0

http://www.ebpml.org/bpel_2_0.htm

Tuesday, July 20, 2004

Please review it

Monday, July 19, 2004

UML to BPEL

It takes processes defined in the Unified Modeling Language (UML) and generates the corresponding BPEL and WSDL files to implement that process.
 
Please refer to
http://www-106.ibm.com/developerworks/webservices/library/ws-uml2bpel/